package gui;

import gui.forms.VoegToeLand;
import gui.forms.VoegToeLokatie;

import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

import java.awt.event.*;
import domein.DomeinController;

public class ActiePanel extends javax.swing.JPanel {

	private DomeinController domeinController;
	private JButton btnVoegToe, btnVoetafdruk,btnImporteer,btnReisplan;
	
	private NavigatiePanel navigatiePanel;
	private JTree jTree;

	public ActiePanel(DomeinController domeinController, NavigatiePanel navigatiePanel) throws IllegalStateException, SQLException, ClassNotFoundException {
		super();
		this.domeinController = domeinController;
		this.navigatiePanel = navigatiePanel;
		this.jTree = navigatiePanel.getTree();
		initGUI();
	}
	
	private void initGUI() throws IllegalStateException, SQLException, ClassNotFoundException 
	{

		try 
		{
			this.setPreferredSize(new java.awt.Dimension(224, 600));
			this.setLayout(null);
			this.setBackground(new java.awt.Color(78, 101, 125));
			this.setSize(212, 490);
			{
				
				btnVoegToe = new JButton();
				this.add(btnVoegToe);
				btnVoegToe.setText("Voeg land/locatie toe");
				btnVoegToe.setBounds(16, 12, 180, 34);
				btnVoegToe.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						voegLandLocatieToe();
					}
			});
				
			}
			{
				btnReisplan = new JButton();
				this.add(btnReisplan);
				btnReisplan.setText("Reisplan maken");
				btnReisplan.setBounds(16, 60, 180, 34);
				btnReisplan.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						actionRoutePlannen();
					}
				});
			}
			{
				btnVoetafdruk = new JButton();
				this.add(btnVoetafdruk);
				btnVoetafdruk.setText("Ecologische Voetafdruk");
				btnVoetafdruk.setBounds(16, 108, 180, 34);
				btnVoetafdruk.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						VoetafdrukFrame voetafdruk = new VoetafdrukFrame(domeinController);
						voetafdruk.setTitle("Ecologische Voetafdruk");
						voetafdruk.setLocationRelativeTo(null);
						voetafdruk.setVisible(true);
					}
				});
			}
			
			{
				btnImporteer = new JButton();
				this.add(btnImporteer);
				btnImporteer.setText("Importeer gegevens");
				btnImporteer.setBounds(16, 155, 180, 34);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	

	public void voegLandLocatieToe() {
		
		DefaultMutableTreeNode geselecteerdeNode =(DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
		
		try {
	
			if(geselecteerdeNode.getLevel() == 1)
			{
			VoegToeLand inst;
			inst = new VoegToeLand(domeinController,jTree,navigatiePanel);
			inst.setTitle("Voeg een land toe");
			inst.setLocationRelativeTo(null);
			inst.setSize(400,230);
			inst.setVisible(true);
			}
			else if(geselecteerdeNode.getLevel() == 2)
			{
				VoegToeLokatie inst;
				inst = new VoegToeLokatie(domeinController,jTree,navigatiePanel);
				inst.setTitle("Voeg een locatie toe");
				inst.setLocationRelativeTo(null);
				inst.setSize(350,330);
				inst.setVisible(true);
			}
			else 
				JOptionPane.showMessageDialog(null,"U kan enkel een land of een locatie toevoegen");
	
		}catch(NullPointerException ex){
			JOptionPane.showMessageDialog(null,"Selecteer een continent of land");
		}
		catch (IllegalStateException e1) {
			e1.printStackTrace();
		} catch (SQLException e1) {
			e1.printStackTrace();
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		}

	}
	
	public void actionRoutePlannen() 
	{
		TreePath[] paths = jTree.getSelectionPaths();
		
		if(paths != null)
		{
			ReisplanFrame reisplan = new ReisplanFrame(domeinController, paths);
			reisplan.setTitle("Reisplan Maken");
			reisplan.setLocationRelativeTo(null);
			reisplan.setVisible(true);
		}
		else
			JOptionPane.showMessageDialog(null, "Gelieve 2 of meer locaties te selecteren", "Error", JOptionPane.ERROR_MESSAGE);

	}

}
